<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<script type="text/javascript">
			//循环嵌套是在一个循环语句中再定义一个循环语句的结构
			// for循环中可以再嵌套一个for循环
			// 这样就实现了双重for循环

			// for双重循环的结构
			// for(外层的初始变量;外层的条件表达式;外层的操作表达式){
			// 	for(内层的初始变量;内层的条件表达式;内层的操作表达式){
			// 		循环体
			// 	}
			// }

			// 可以把内层的for循环看做是外层的执行语句
			// 外层循环执行一次，内层循环执行全部

			//代码验证
			// for (i = 1; i <= 3; i++) {
			// 	console.log('这是外层循环的第' + i + '次,注意是外层循环!');
			// 	for (j = 1; j <= 3; j++) {
			// 		console.log('这是内层循环的第' + j + '次');
			// 	}
			// }


			//打印五行五列的星星
			//  var str = '';
			//  var result = '';
			//  for (i = 1; i <= 5; i++) {
			//  	str = '';
			//  	for (j = 1; j <= 5; j++) {
			//  		str = str + '★';
			//  	}
			//  	result = result + str + '\n';
			//  }
			//  console.log(result);  这种写法虽然实现了但是定义了不必要的变量，逻辑不清晰


			//下面这种方法思路更清晰
			// var str = '';
			// for (var i = 1; i <= 5; i++) { //外层循环负责打印5行
			// 	for (var j = 1; j <= 5; j++) { //内层循环负责一行打印五个星星
			// 		str = str + '★';
			// 	}
			// 	str = str + '\n'; //每打印5个加一个换行符
			// }
			// console.log(str);

			// 打印n行n列的星星，就是获取用户的输入值作为行数和列数，行数作为外层循环次数，列数作为内层循环次数


			// 打印倒三角阵列  行数和个数正好相反
			// var str = '';
			// for (var i = 1; i <= 8; i++) {  //外层控制打印8行
			// 	for (j = 0; j <= 8 - i; j++) { //注意这里是从0开始，所以第一行正好打印8个
			// 		str = str + '☆';
			// 	}
			// 	str = str + '\n';
			// }
			// console.log(str);

			//另一种方法使内层,j初始化 j=i;j<=8;j++ 也可以实现
			//这个案例的实现方法有多种，只要找到每行打印个数和行数的关系就行

			// 打印正三角
			// var str = '';
			// for (var a = 1; a<=10 ; a++) {
			// 	for (var b =1 ; b<= a ;b++){
			// 		str = str + '☆';
			// 	}
			// 	str = str + '\n';
			// }
			// console.log(str);

			// 打印九九乘法表
			// var str = '';
			// for (var i = 1; i <= 9; i++) {
			// 	for (var j = 1; j <= i; j++) {
			// 		str = str + '' + j + '×' + i + '='+i*j+'\t';
			// 	}
			// 	str = str + '\n';
			// }
			// console.log(str);
		</script>
	</head>
	<body>
	</body>
</html>
